var express = require('express');
var router = express.Router();
const path = require('path')
var db = require('../dbConfig/sql.js');
var fs = require("fs");
var moment = require("moment");
var multer = require('multer');
var storage = multer.diskStorage({
	//文件存储路径
	destination: function(req, file, cb) {
		cb(null, path.join(__dirname, "../upload"));
	},
	//修改上传文件的名字
	//file 是个文件对象 ,fieldname对应在客户端的name属性
	//存储的文件需要自己加上文件的后缀，multer并不会自动添加
	//这里直接忽略文件的后缀.
	filename: function(req, file, cb) {
		var date = new Date();
		cb(null, moment().format("YYYYMMDDhhmmss") + file.originalname);
	}
});

/* GET home page. */
/* 查 */
router.get('/', function(req, res, next) {
	var sql = `SELECT * FROM userinfo`;
	db.query(sql, function(err, result) {
		if (err) {
			return res.send({
				code: 404,
				message: '失败'
			});
		} else {
			return res.send({
				code: 200,
				message: "成功",
				data: result
			})
		}
	});
	// res.render('index', {
	// 	title: 'Express'
	// });
	console.log(moment().format());
});

/* 增*/
router.post('/add', function(req, res, next) {
	var param = req.query || req.params;
	var sql =
		`INSERT INTO userinfo(name,age,address,tell) VALUES('${param.name}','${param.age}','${param.address}','${param.tell}')`;
	db.query(sql, function(err, result) {
		if (err) {
			return res.send({
				code: 404,
				message: '失败',
				err: err
			});
		} else {
			return res.send({
				code: 200,
				message: "成功",
				data: result
			})
		}
	});
})
/*删  */
router.post('/delete', function(req, res, next) {
	var param = req.query || req.params;
	var sql = `DELETE FROM userinfo WHERE id='${param.id}'`;
	db.query(sql, function(err, result) {
		if (err) {
			return res.send({
				code: 404,
				message: '失败',
				err: err
			});
		} else {
			return res.send({
				code: 200,
				message: "成功",
				data: result
			})
		}
	});
})

/* 更新 */
router.post('/updata', function(req, res, next) {
	var param = req.query || req.params;
	var sql = `UPDATE userinfo SET address= '${param.address}' WHERE id='${param.id}'`;
	db.query(sql, function(err, result) {
		if (err) {
			return res.send({
				code: 404,
				message: '失败',
				err: err
			});
		} else {
			return res.send({
				code: 200,
				message: "成功",
				data: result
			})
		}
	});
})
// 单个文件上传
router.post('/upload', multer({
	storage: storage
}).single('file'), function(req, res, next) {
	var fileName = req.file.filename;
	// var destDir = req.body.dir == undefined ? "default" : req.body.dir;
	var sourceFile = req.file.path;
	// var destPath = path.join(__dirname.replace("routes", ""), "upload", destDir, fileName);
	// var dest_Dir = path.join(__dirname.replace("routes", ""), "upload", destDir);
	var baseUrl = 'http://localhost:3000/'
	var destPath = path.join(__dirname.replace("routes", ""), "upload", fileName);
	var dest_Dir = path.join(__dirname.replace("routes", ""), "upload");
	var fileurl = baseUrl + destPath.substr(destPath.indexOf("upload"));
	fileurl = fileurl.replace(/\\/g, "/");
	fs.exists(dest_Dir, function(exists) {
		if (exists) {
			fs.rename(sourceFile, destPath, function(err) {
				res.status(200).json({
					httpCode: 200,
					message: '上传成功',
					data: {
						"fileurl": fileurl
					},
				});
			});
		} else {
			fs.mkdir(dest_Dir, 0777, function(err) {
				if (err) {
					res.status(500).json({
						httpCode: 500,
						message: err,
						data: [],
					});
				} else {
					fs.rename(sourceFile, destPath, function(err) {
						res.status(200).json({
							httpCode: 200,
							message: '上传成功',
							data: {
								"fileurl": fileurl
							},
						});
					});
				}
			})
		}
	});

});
// 多个文件上传
router.post('/uploads', multer({
	storage: storage
}).array('file', 8), function(req, res, next) {
	var paths = [];
	for (var i = 0; i < req.files.length; i++) {
		var path = req.files[i].path.replace(/\\/g, "/");
		var fileurl = path.substr(path.indexOf("upload")).replace('\\', '/');
		paths.push(fileurl);
	}
	res.status(200).json({
		httpCode: 200,
		message: '上传成功',
		"fileurls": paths,
	});
});

// 读取服务器文件
router.get('/reduploads', function(req, res, next) {
	 fs.readFile('./upload/test.txt', 'utf-8', function(err, data) {
	 	if (err) {
	 		throw err;
	 	}
		res.send(data)
	 	// console.log(data);
	 });
});



// 删除指定文件
// fs.unlink('./tmp/234.txt', function(err) {
// 	if (err) {
// 		throw err;
// 	}
// 	console.log('成功删除了 /tmp/234.txt');
// });

//读取指定文件
/* fs.readFile('./tmp/test.txt', 'utf-8', function(err, data) {
	if (err) {
		throw err;
	}
	console.log(data);
}); */
//写入文件
// 写入文件内容（如果文件不存在会创建一个文件）
// 传递了追加参数 { 'flag': 'a' }
/* fs.writeFile('./tmp/test4.txt', '我是测试', {
	'flag': 'a'
}, function(err) {
	if (err) {
		throw err;
	}
	console.log('Saved.');
	// 写入成功后读取测试
	fs.readFile('./tmp/test4.txt', 'utf-8', function(err, data) {
		if (err) {
			throw err;
		}
		console.log(data);
	});
}); */

// 追加写入
/* fs.appendFile("./tmp/test4.txt", "我是追加的字符", function(err) {
	if (err) {
		return console.log(err);
	} else {
		console.log("追加成功");
	}
}) */
//检测文件是否存在:
/* var dest_Dir = path.join(__dirname.replace("routes", ""), "bin");
fs.exists(dest_Dir, function(exists) {
	if (exists) {
		//存在
		console.log('存在');
	} else {
		console.log('不存在');
	}
}); */
// 读取目录文件
/* fs.readdir('./tmp', function(err, files) {
    if (err) {
        throw err;
    }
    
    console.log(files);
}); */
// 删除文件夹
/* fs.rmdir('./tmp', function(err) {
    if (err) {
        throw err;
    }
    console.log('成功删除了 空文件夹 tmp');
}); */

module.exports = router;
